package br.com.insight.consultoria.integracao.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;
import br.com.insight.consultoria.entity.IntereceAtuacao;
import br.com.insight.consultoria.entity.Usuario;
import br.com.insight.consultoria.erro.exception.InsightConstants;
import br.com.insight.consultoria.erro.exception.InsightDaoException;
import br.com.insight.consultoria.erro.exception.InsightException;
import br.com.insight.consultoria.erro.exception.SistemaException;
import br.com.insight.consultoria.integracao.dao.genericdao.GenericDAO;
import br.com.insight.consultoria.integracao.dao.interfacedao.IntereceAtuacaoDAO;

public class IntereceAtuacaoImpDAO extends GenericDAO implements IntereceAtuacaoDAO{

	public void inserir(IntereceAtuacao intereceAtuacao) throws InsightException{
		try{
			
			saveOrUpdateEntity(intereceAtuacao);
		
		}catch(DataAccessException sql){
		
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
	}
	
	public void alterar(IntereceAtuacao intereceAtuacao) throws InsightException{
		try{
		
			saveOrUpdateEntity(intereceAtuacao);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
	}
	
	public void excluir(IntereceAtuacao intereceAtuacao) throws InsightException{
		
		try{
		
		deleteEntity(intereceAtuacao);
		
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
	}
	
	public IntereceAtuacao getIntereceAtuacao(IntereceAtuacao.Id id) throws InsightException{
		
		try{
		
		return (IntereceAtuacao) getEntityById(IntereceAtuacao.class, id);
		
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
	}
	
	public List<IntereceAtuacao> pesquisar(Usuario usuario)throws InsightException {
		
		List findFiltered=null;
		
		try{
		
			findFiltered= findFiltered(IntereceAtuacao.class, "usuario", usuario);
		
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
		return findFiltered;
		
	}
	
}
